home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / Asm / Blitter / PixelTrail2.s < prev    next >
Text File  |  1997-12-16  |  4KB  |  173 lines

  1. ;-------T-------T------------------------T----------------------------------;
  2. ;Name:      Pixel Trail #2
  3. ;Author:    Paul Manias
  4. ;Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
  5. ;
  6. ;This demo demonstrates the usefulness of LISTs, by drawing a trail of
  7. ;pixels attached to the mouse.
  8. ;
  9. ;Press LMB to exit.
  10.  
  11.     INCDIR    "GMSDev:Includes/"
  12.     INCLUDE    "dpkernel/dpkernel.i"
  13.  
  14.     SECTION    "Demo",CODE
  15.  
  16. ;===========================================================================;
  17. ;                             INITIALISE DEMO
  18. ;===========================================================================;
  19.  
  20.     STARTDPK
  21.  
  22. Start:    MOVEM.L    A0-A6/D1-D7,-(SP)
  23.     move.l    DPKBase(pc),a6
  24.     lea    ScreenTags(pc),a0
  25.     sub.l    a1,a1
  26.     CALL    Init
  27.     tst.l    d0
  28.     beq.s    .Exit
  29.  
  30.     moveq    #ID_JOYDATA,d0    ;Get joydata structure.
  31.     CALL    Get
  32.     move.l    d0,JoyData
  33.     beq.s    .Exit
  34.     move.l    d0,a0    ;Initialise the joydata structure.
  35.     sub.l    a1,a1
  36.     CALL    Init
  37.     tst.l    d0
  38.     beq.s    .Exit
  39.  
  40.     move.l    Screen(pc),a0
  41.     CALL    Display
  42.  
  43.     bsr.s    Main
  44.  
  45. .Exit    move.l    DPKBase(pc),a6
  46.     move.l    JoyData(pc),a0
  47.     CALL    Free
  48.     move.l    Screen(pc),a0
  49.     CALL    Free
  50.     MOVEM.L    (SP)+,A0-A6/D1-D7
  51.     moveq    #ERR_OK,d0
  52.     rts
  53.  
  54. ;===========================================================================;
  55. ;                                MAIN LOOP
  56. ;===========================================================================;
  57.  
  58. Main:    move.l    DPKBase(pc),a6
  59.     move.l    JoyData(pc),a0
  60.     CALL    Query
  61.     move.l    JoyData(pc),a0
  62.     lea    Mouse(pc),a2
  63.     move.w    JD_XChange(a0),d0
  64.     add.w    d0,(a2)
  65.     move.w    JD_YChange(a0),d0
  66.     add.w    d0,2(a2)
  67.  
  68.     move.l    JD_Buttons(a0),d0
  69.     btst    #JB_LMB,d0
  70.     bne.s    .done
  71.  
  72. .ChkLX    tst.w    (a2)
  73.     bge.s    .ChkRX
  74.     clr.w    (a2)
  75. .ChkRX    cmp.w    #319,(a2)
  76.     ble.s    .ChkTY
  77.     move.w    #319,(a2)
  78. .ChkTY    tst.w    2(a2)
  79.     bge.s    .ChkBY
  80.     clr.w    2(a2)
  81. .ChkBY    cmp.w    #255,2(a2)
  82.     ble.s    .Draw
  83.     move.w    #255,2(a2)
  84.  
  85. .Draw    lea    MList(pc),a3    ;Shift the list up a place.
  86.     moveq    #32-1,d7
  87. .tloop    move.l    PXL_SIZEOF(a3),PXL_XCoord(a3)
  88.     addq.w    #PXL_SIZEOF,a3
  89.     dbra    d7,.tloop
  90.  
  91.     move.l    BLTBase(pc),a6
  92.     move.l    Screen(pc),a0    ;a0 = GameScreen
  93.     move.l    GS_Bitmap(a0),a0    ;a0 = Bitmap
  94.     lea    PixelList(pc),a1    ;a1 = Pixel list.
  95.     CALL    bltDrawPixelList
  96.  
  97.     move.l    SCRBase(pc),a6
  98.     CALL    scrWaitAVBL
  99.     move.l    Screen(pc),a0
  100.     CALL    scrSwapBuffers
  101.     bra    Main
  102.  
  103. .done    rts
  104.  
  105. ;===========================================================================;
  106. ;                                  DATA
  107. ;===========================================================================;
  108.  
  109. JoyData:    dc.l  0
  110.  
  111. ScreenTags:    dc.l  TAGS_SCREEN
  112. Screen:        dc.l  0
  113.         dc.l  GSA_Palette,.palette
  114.         dc.l    GSA_BitmapTags,0
  115.         dc.l    BMA_AmtColours,32
  116.         dc.l    TAGEND,0
  117.         dc.l  GSA_Attrib,DBLBUFFER
  118.         dc.l  TAGEND
  119.  
  120. .palette    dc.l  PALETTE,32
  121.         dc.l  $000000,$101010,$202020,$303030,$404040,$505050,$606060,$707070
  122.         dc.l  $808080,$909090,$a0a0a0,$b0b0b0,$c0c0c0,$d0d0d0,$e0e0e0,$f0f0f0
  123.         dc.l  $000000,$101010,$202020,$303030,$404040,$505050,$606060,$707070
  124.         dc.l  $808080,$909090,$a0a0a0,$b0b0b0,$c0c0c0,$d0d0d0,$e0e0e0,$ffffff
  125.  
  126. ;---------------------------------------------------------------------------;
  127.  
  128. PixelList:    dc.w  33,PXL_SIZEOF    ;Amount of entries.
  129.         dc.l  MList    ;Pointer to pixel list array.
  130. MList:        PIXEL 160,128,00    ;First pixel to draw (at back)
  131.         PIXEL 160,128,00    ;X/Y/Colour
  132.         PIXEL 160,128,01    ;..
  133.         PIXEL 160,128,02    ;..
  134.         PIXEL 160,128,03    ;..
  135.         PIXEL 160,128,04    ;..
  136.         PIXEL 160,128,05    ;..
  137.         PIXEL 160,128,06    ;..
  138.         PIXEL 160,128,07    ;..
  139.         PIXEL 160,128,08    ;..
  140.         PIXEL 160,128,09    ;..
  141.         PIXEL 160,128,10    ;..
  142.         PIXEL 160,128,11    ;..
  143.         PIXEL 160,128,12    ;..
  144.         PIXEL 160,128,13    ;..
  145.         PIXEL 160,128,14    ;..
  146.         PIXEL 160,128,15    ;..
  147.         PIXEL 160,128,16    ;..
  148.         PIXEL 160,128,17    ;..
  149.         PIXEL 160,128,18    ;..
  150.         PIXEL 160,128,19    ;..
  151.         PIXEL 160,128,20    ;..
  152.         PIXEL 160,128,21    ;..
  153.         PIXEL 160,128,22    ;..
  154.         PIXEL 160,128,23    ;..
  155.         PIXEL 160,128,24    ;..
  156.         PIXEL 160,128,25    ;..
  157.         PIXEL 160,128,26    ;..
  158.         PIXEL 160,128,27    ;..
  159.         PIXEL 160,128,28    ;..
  160.         PIXEL 160,128,29    ;..
  161.         PIXEL 160,128,30    ;..
  162. Mouse:        PIXEL 160,128,31    ;Last pixel to draw (in front)
  163.  
  164. ;===========================================================================;
  165.  
  166. ProgName:    dc.b  "Pixel Trail II",0
  167. ProgAuthor:    dc.b  "Paul Manias",0
  168. ProgDate:    dc.b  "14 December 1997",0
  169. ProgCopyright:    dc.b  "DreamWorld Productions (c) 1996-1997.  Freely distributable.",0
  170. ProgShort:    dc.b  "Pixel trail demonstration.",0
  171.         even
  172.  
  173.